package com.fatdetection.demo.config;

import org.springframework.web.servlet.HandlerInterceptor;

//@Component
public class RequestInterceptor_bak implements HandlerInterceptor {
//    @Autowired
//    TokenUtils tokenUtils;
//
//    @Autowired
//    StringRedisTemplate redisTemplate;
//
//    @Value("${tokenRefreshTime}")
//    Long tokenRefreshTime;
//
//    @Value("${tokenExpTime}")
//    Long tokenExpTime;
//
//    @Override
//    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
//        System.out.println("-----拦截器拦截请求-----");
//        TokenErrorMsg tokenErrorMsg = new TokenErrorMsg(response);
//        String authorization = request.getHeader("authorization");
//        if(authorization == null){
//            // token 不存在返回错误信息。
//            tokenErrorMsg.noToken().sendMsg();
//            return false;
//        }
//        if(!authorization.startsWith("Bearer ")){
//            // token 格式不正确
//            tokenErrorMsg.tokenNotValid().sendMsg();
//            return false;
//        }
//        String token = authorization.replace("Bearer ", "");
//        Claims claims;
//        try {
//            claims = tokenUtils.verifyToken(token);
//        } catch (ExpiredJwtException e){
//            // token 过期了
//            tokenErrorMsg.tokenOutDate().sendMsg();
//            return false;
//        } catch (UnsupportedJwtException | MalformedJwtException | SignatureException | IllegalArgumentException e){
//            // token 不合法
//            tokenErrorMsg.tokenNotValid().sendMsg();
//            return false;
//        }
//        if(checkRole(claims, request)){
//            // token检测并刷新
//            String outDateTimeFromRedis = redisTemplate.opsForValue().get(token);
//            if(outDateTimeFromRedis != null){
//                if(Long.parseLong(outDateTimeFromRedis) - new Date().getTime() <= tokenRefreshTime) {
//                    // 时间已经小于 约定时间 刷新 token 的时间
//                    redisTemplate.opsForValue()
//                            .set(token
//                            , String.valueOf(new Date(System.currentTimeMillis() + tokenExpTime * 1000).getTime())
//                            , tokenExpTime, TimeUnit.SECONDS);
//                }
//            }
//            return true;
//        } else {
//          // 权限不足
//            tokenErrorMsg.writeTo("用户权限不足").sendMsg();
//          return false;
//        }
//    }
//
//    private boolean checkRole(Claims claims, HttpServletRequest request){
//        String role = claims.get("role").toString();
//        return "1".equals(role) || "2".equals(role);
//    }


}
